package db

import (
	"dianping_sol/config"
	//"github.com/jinzhu/gorm"
	//_ "github.com/mattn/go-sqlite3"
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"time"
)

type GRP struct {
	Id    int    `gorm:"primaryKey;autoIncrement;unique" json:"id"`
	C     string `json:"c"`     //城市
	G     string `json:"g"`     //类别
	GName string `json:"gName"` //类别中文
	R     string `json:"r"`     //地址
	RName string `json:"RName"` //地址中文
	P     string `json:"p"`     //页码
	N     string `json:"n"`     //当前页码
}

type Message struct {
	Id                int       `gorm:"primaryKey;autoIncrement;unique" json:"id"`
	G                 string    `json:"g"` //类别
	R                 string    `json:"r"` //地址
	N                 string    `json:"p"` //页码
	L                 string    `json:"l"` //当前页码的商户的序号
	Region            string    `json:"region"`
	ShopId            string    `gorm:"UNIQUE" json:"shop_id"`
	ShopName          string    `json:"shop_name"`
	CommentCount      int       `gorm:"type:int(8)" json:"comment_count" `
	PriceAvg          float64   `gorm:"type:real(10,1)"  json:"price_avg"`
	TagCuisine        string    `json:"tag_cuisine"`
	TagLocation       string    `json:"tag_location"`
	ShopLocation      string    `json:"shop_location"`
	ShopInfoUrl       string    `json:"shop_info_url"`
	ShopImgUrl        string    `json:"shop_img_url"`
	ScoreAvg          float64   `gorm:"type:real(3,1)" json:"score_avg"`
	ScoreKouwei       float64   `gorm:"type:real(3,1)" json:"score_kouwei"`
	ScoreHuanjing     float64   `gorm:"type:real(3,1)" json:"score_huanjing"`
	ScoreFuwu         float64   `gorm:"type:real(3,1)" json:"score_fuwu"`
	ShopTel           string    `json:"shop_tel"`
	ShopBusinessHours string    `json:"shop_business_hours"`
	ShopLat           float64   `gorm:"type:real(3,1)" json:"shop_lat"`
	ShopLng           float64   `gorm:"type:real(3,1)" json:"shop_lng"`
	Recommend         string    `json:"recommend"`
	CreatedAt         time.Time `json:"created_at"`
	UpdatedAt         time.Time `json:"updated_at"`
}

var G_DB *gorm.DB

//func InitSqlLite3() *gorm.DB {
//	gdb, err := gorm.Open("sqlite3", "./spiders.db")
//	if err != nil {
//		panic(err)
//	}
//	gdb.AutoMigrate(&GRP{}, &Init{}, &Message{})
//	return gdb
//}

func InitMysql() *gorm.DB {
	connectMessage := config.Conf.Database.Uri
	mysqlConfig := mysql.Config{
		DSN:                       connectMessage, // DSN data source name
		DefaultStringSize:         255,            // string 类型字段的默认长度
		DisableDatetimePrecision:  true,           // 禁用 datetime 精度，MySQL 5.6 之前的数据库不支持
		DontSupportRenameIndex:    true,           // 重命名索引时采用删除并新建的方式，MySQL 5.7 之前的数据库和 MariaDB 不支持重命名索引
		DontSupportRenameColumn:   true,           // 用 `change` 重命名列，MySQL 8 之前的数据库和 MariaDB 不支持重命名列
		SkipInitializeWithVersion: false,          // 根据版本自动配置
	}

	gormconfig := &gorm.Config{
		DisableForeignKeyConstraintWhenMigrating: true,
	}
	db, err := gorm.Open(mysql.New(mysqlConfig), gormconfig)
	if err != nil {
		panic(err)
	}

	if !config.Conf.Init.Successful {
		db.Migrator().DropTable(&GRP{}, &Message{})
		db.AutoMigrate(&GRP{}, &Message{})
	}
	return db
}
